#pragma once

struct sLimit
{
	char m_szName[32];
	int * m_pValue;
};

class CLimits
{
	static int				s_nMaxScriptSpace;
	static int				s_nNumModulesVars;
	static int				s_nNumVars;
	static int				s_nNumScriptVars;
	static int				s_nNumScriptTimers;
	static int				s_nJumpTableSize;
	static int				s_nMaxArraySize;
	static int				s_nMaxStringLength;
	static int				s_nMaxTextLabelLength;
	static int				s_nMaxModels;
	static const sLimit		s_pLimits[];

public:
	inline static int GetMaxScriptSpace()			{return s_nMaxScriptSpace;}
	inline static int GetMaxMissionVar()			{return s_nNumModulesVars-1;}
	inline static int GetMaxVar()					{return s_nNumVars-1;}
	inline static int GetMaxScriptVar()				{return s_nNumScriptVars-1;}
	inline static int GetMaxArraySize()				{return	s_nMaxArraySize;}
	inline static int GetMaxStringLength()			{return	s_nMaxStringLength-1;}
	inline static int GetMaxTextLabelLength()		{return	s_nMaxTextLabelLength-1;}
	inline static int GetMaxSwitchSize()			{return s_nJumpTableSize;}
	inline static int GetNumScriptTimers()			{return s_nNumScriptTimers;}
	inline static int GetMaxModels()				{return s_nMaxModels;}

	static void LoadFromFile(const char *szFileName);
};